package com.namuan.jp_stock.activity;

import org.json.JSONException;
import org.json.JSONObject;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.webkit.WebView;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.TextView;

import com.namuan.jp_stock.util.AsyncJustplaceRunner;
import com.namuan.jp_stock.util.BaseRequestListener;
import com.namuan.jp_stock.util.Justplace;
import com.namuan.jp_stock.util.JustplaceError;
import com.namuan.jp_stock.util.Util;
import com.namuan.jp_stock.dialog.JoinProvisionDialog;
import com.namuan.jp_stock.activity.LoginActivity;
import com.namuan.jp_stock.R;

public class RegisterActivity extends Activity implements OnClickListener, OnCheckedChangeListener {
	Justplace mJustplace;
	EditText usernickText;
	EditText passwordText;
	EditText passwordText2;
	EditText userMail;
	TextView tvHeader;
	TextView tvJPprovision;
	TextView tvPersonalInfoCollection;
	CheckBox checkBox1;
	CheckBox checkBox2;
	CheckBox checkBox3;
	WebView wvJPprovision;
	WebView wvPersonalInfoCollection;
	ImageButton headerCancelBtn;
	ImageButton headerJoinBtn;
	ImageButton imbBtnMoreJP;
	ImageButton imbBtnMorePersonalInfo;
	String textUrl = null;
	boolean registok =false;
	private AsyncJustplaceRunner mAsyncRunner;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.join);
        
        LoginActivity.activityList.add(this);
        usernickText = (EditText)findViewById(R.id.usernicknameText);
		passwordText = (EditText)findViewById(R.id.passwordText);
		passwordText2 = (EditText)findViewById(R.id.passwordText2);
		userMail = (EditText)findViewById(R.id.userMail);
		headerCancelBtn = (ImageButton)findViewById(R.id.headerCancelBtn);
		headerJoinBtn = (ImageButton)findViewById(R.id.headerJoinBtn);
		
		imbBtnMoreJP = (ImageButton)findViewById(R.id.imbBtnMoreJP);
		imbBtnMorePersonalInfo = (ImageButton)findViewById(R.id.imbBtnMorePersonalInfo);
		
		imbBtnMoreJP.setOnClickListener(this);
		imbBtnMorePersonalInfo.setOnClickListener(this);
		//wvJPprovision = (WebView) findViewById(R.id.wvJPprovision);
		//wvPersonalInfoCollection = (WebView) findViewById(R.id.wvPersonalInfoCollection);
		
		tvJPprovision = (TextView) findViewById(R.id.tvJPprovision);
		tvPersonalInfoCollection = (TextView) findViewById(R.id.tvPersonalInfoCollection);
		
		checkBox1 = (CheckBox) findViewById(R.id.checkBox1);
		checkBox2 = (CheckBox) findViewById(R.id.checkBox2);
		checkBox3 = (CheckBox) findViewById(R.id.checkBox3);
		
		checkBox1.setOnCheckedChangeListener(this);
		checkBox2.setOnCheckedChangeListener(this);
		checkBox3.setOnCheckedChangeListener(this);
		
		SetJPprovisionText();
		SetAgressPersonalDataText();
		
		headerCancelBtn.setOnClickListener(this);
		headerJoinBtn.setOnClickListener(this);
       
		mJustplace=new Justplace();
		mAsyncRunner=new AsyncJustplaceRunner(mJustplace);
    }
    
	private void register(){
    	 
    	Bundle params = new Bundle();
    	 params.putString("usernick", usernickText.getText().toString());
    	 params.putString("pw", passwordText.getText().toString());
    	 params.putString("email", userMail.getText().toString());
    	 mAsyncRunner.request("register.do", params, "POST",
                 new registRequestListener(), null);
    	
    	
    }
    
    
    
	@Override
	public void onClick(View v) {
		switch(v.getId())
		{
		
		// get Tweets ��ư Ŭ��
		case R.id.headerCancelBtn:
			finish();
			break;
		
		// set ListView ��ư Ŭ��
		case R.id.headerJoinBtn:
			Log.d("testpa","DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD");
			Log.d("testpa",usernickText.getText().toString()+"1212");
			if(usernickText.getText().toString().equals("")){
			Util.showAlert(RegisterActivity.this, "회원가입 실패", "아이디를 입력해주세요");
			} else if(passwordText.getText().toString().equals("")){
				Util.showAlert(RegisterActivity.this, "회원가입 실패", "패스워드를 입력해주세요");
			} else if(!passwordText2.getText().toString().equals(passwordText.getText().toString())){
				Util.showAlert(RegisterActivity.this, "회원가입 실패", "패스워드를 확인해 주세요");
				Log.d("testpasssss",usernickText.getText().toString());
			} else if(userMail.getText().toString().equals("")){
				Util.showAlert(RegisterActivity.this, "회원가입 실패", "이메일을 입력해주세요");
			} else if(!checkBox1.isChecked()) {
				Util.showAlert(RegisterActivity.this, "회원가입 실패", "'서비스 이용약관'에 동의해주세요");
			} else if(!checkBox2.isChecked()) {
				Util.showAlert(RegisterActivity.this, "회원가입 실패", "'개인정보 수집 및 이용안내'에 동의해주세요");
			} 
			else {
				register();
			}
			
			break;
		case R.id.imbBtnMoreJP:
			textUrl = "file:///android_asset/jpprovision.html";
			Intent jpProvisionIntent = new Intent(this, JoinProvisionDialog.class);
			jpProvisionIntent.putExtra("header", "서비스 이용약관");
			jpProvisionIntent.putExtra("textUrl", textUrl);
			this.startActivity(jpProvisionIntent);
			break;
			
		case R.id.imbBtnMorePersonalInfo:
			textUrl = "file:///android_asset/personalinfo.html";
			Intent infoprovisionIntent = new Intent(this, JoinProvisionDialog.class);
			infoprovisionIntent.putExtra("header", "개인정보 수집 및 이용안내");
			infoprovisionIntent.putExtra("textUrl", textUrl);
			this.startActivity(infoprovisionIntent);
			break;
			
			
		}
	}
		
public class registRequestListener extends BaseRequestListener {

        public void onComplete(final String response, final Object state) {
        	 Log.d("Justplace-Main", "Response: " + response.toString());
            try {
            	
                Log.d("Justplace-Main", "Response: " + response.toString());
                JSONObject json = Util.parseJson(response);
                Log.d("asdfasdf", json.getBoolean("state")+"");
                if(json.getBoolean("state")){
					
				registok=true;
				}
            } catch (JSONException e) {
                Log.w("Justplace-Main", "JSON Error in response");
            } catch (JustplaceError e) {
                Log.w("Justplace-Main", "Justplace Error: " + e.getMessage());
            }
            runOnUiThread(new Runnable(){

				@Override
				public void run() {
					if(registok){
						registSuccess();
					}else{
						registFail();
					}
				}
            	   
               });
        }
    }
	public void registSuccess(){
		finish();
	}
	public void registFail(){
		Util.showAlert(RegisterActivity.this, "로그인실패", "아이디와 패스워드를 확인해주세요");
	}
	
	private void SetAgressPersonalDataText() {
		
		/*
		WebSettings setting = null;
        setting = wvJPprovision.getSettings();
        setting.setJavaScriptEnabled(true);
        setting.setGeolocationEnabled(true);
        wvJPprovision.setVerticalScrollbarOverlay(true);
        wvJPprovision.loadUrl("file:///android_asset/personalinfo.html");*/
		tvPersonalInfoCollection.setText("\n수집하는 개인정보의 항목 및 수집방법\n가. 수집하는 개인정보의 항목\n첫째, 회사는 회원가입, 원활한 고객상담, 각종 서비스의 제공을 위해 최초 실행 당시 아래와 같은 개인정보를 자동으로 수집하고 있습니다.\n[회원가입시]\n- 필수항목 : 아이디(ID), 비밀번호, 닉네임(별명), 이메일\n- 선택항목 : 주소, Face book, 트위터, 개인홈페이지 주소\n 둘째, 서비스 이용과정에서 아래와 같은 정보들이 생성되어 수집될 수 있습니다.\n- 방문 일시, 접속 IP, 서비스 이용 기록, 불량 이용 기록\n나. 개인정보 수집방법\n회사는 다음과 같은 방법으로 개인정보를 수집합니다.\n - Just Place 서비스 또는 프로그램을 실행 또는 사용함으로써 자동으로 수집\n - 서비스 가입이나 사용 중 이용자의 자발적 제공을 통한 수집\n 개인정보의 수집 및 이용목적\n가. 서비스 제공에 관한 계약 이행\n컨텐츠 제공, 특정 맞춤 서비스 제공, 본인인증 등\n나. 회원관리\n제한적 본인 확인제에 따른 본인확인, 개인식별, 불량회원의 부정 이용방지와 비인가 사용방지, 가입의사 확인, 가입 및 가입횟수 제한, 만14세 미만 아동 개인정보 수집 시 법정 대리인 동의여부 확인, 추후 법정 대리인 본인확인, 분쟁 조정을 위한 기록보존, 불만처리 등 민원처리, 고지사항 전달\n다. 신규 서비스 개발 및 마케팅•광고에의 활용\n신규 서비스 개발 및 맞춤 서비스 제공, 통계학적 특성에 따른 서비스 제공 및 광고 게재, 서비스의 유효성 확인, 이벤트 및 광고성 정보 제공 및 참여기회 제공, 접속빈도 파악, 회원의 서비스이용에 대한 통계\n\n개인정보의 공유 및 제공\n회사는 이용자들의 개인정보를 '개인정보의 수집목적 및 이용목적'에서 고지한 범위 내에서 사용하며, 이용자의 사전 동의 없이는 동 범위를 초과하여 이용하거나 원칙적으로 이용자의 개인정보를 외부에 공개하지 않습니다. 다만, 아래의 경우에는 예외로 합니다.\n- 이용자들이 사전에 공개에 동의한 경우\n- 법령의 규정에 의거하거나, 수사 목적으로 법령에 정해진 절차와 방법에 따라 수사기관의 요구가 있는 경우\n\n개인정보의 보유 및 이용기간\n이용자의 개인정보는 원칙적으로 개인정보의 수집 및 이용목적이 달성되면 지체 없이 파기합니다. 단, 다음의 정보에 대해서는 아래의 이유로 명시한 기간 동안 보존합니다.\n가. 회사 내부 방침에 의한 정보보유 사유\n- 부정이용기록\n  보존 이유 : 부정 이용 방지\n  보존 기간 : 1년\n나. 관련법령에 의한 정보보유 사유\n상법, 전자상거래 등에서의 소비자보호에 관한 법률 등 관계법령의 규정에 의하여 보존할 필요가 있는 경우 회사는 관계법령에서 정한 일정한 기간 동안 회원정보를 보관합니다. 이 경우 회사는 보관하는 정보를 그 보관의 목적으로만 이용하며 보존기간은 아래와 같습니다.\n - 계약 또는 청약철회 등에 관한 기록\n\t보존 이유 : 전자상거래 등에서의 소비자보호에 관한 법률\n\t보존 기간 : 5년\n - 대금결제 및 재화 등의 공급에 관한 기록\n\t보존 이유 : 전자상거래 등에서의 소비자보호에 관한 법률\n\t보존 기간 : 5년\n - 소비자의 불만 또는 분쟁처리에 관한 기록\n\t보존 이유 : 전자상거래 등에서의 소비자보호에 관한 법률\n\t보존 기간 : 3년\n - 본인확인에 관한 기록\n\t보존 이유 : 정보통신망 이용촉진 및 정보보호 등에 관한 법률\n\t보존 기간 : 6개월\n - 방문에 관한 기록\n\t보존 이유 : 통신비밀보호법\n\t보존 기간 : 3개월");
		
	}
	private void SetJPprovisionText() {
		
		tvJPprovision.setText("\n제 1 장 총칙\n\n제 1 조 (목적)\n 본 이용약관(이하 '약관'이라 함)은 주식회사 나무앤(이하 '회사'라 함)이 제공하는 Just Place 서비스(이하 '본 서비스'라 함)를 이용함에 있어 회사와 회원간의 권리, 의무 및 책임사항을 규정함을 목적으로 합니다.\n\n 제 2 조 (용어의 정의)\n 이 약관에서 사용하는 용어의 정의는 다음 각 호와 같으며, 정의되지 않은 용어에 대한 해석은 관계법령과 서비스의 이용약관 및 개인정보취급방침, 회사가 별도로 정한 지침 등에 상관례에 의합니다.\n Just Place 서비스: 위치 기반 소셜 네트워크 서비스(SNS)으로 글과 사진, 동영상 등의 정보성 디지털 컨텐츠에 대해서 확인하고 관심 있는 사항들에 대해서 개인 회원이 직접 기록하고 회원들간 공유할 수 있는 서비스입니다.\n 회원: Just Place 회원으로 본 약관에 동의하여 이용계약을 체결하고 서비스를 이용하는 모든 회원을 의미합니다.\n 장소정보: 모바일 단말기의 WPS(Wifi Positioning System), GPS 기반으로 추출된 좌표를 이용하여 '회원'이 생성하는 지점들을 말합니다. .\n 애플리케이션: 모바일 단말기에서 '본 서비스'를 설치하여 이용할 수 있도록 구성된 프로그램을 말합니다.\n 개인(회원)정보: 정보통신망 이용촉진 및 정보보호 등에 관한 법률에서 언급하는 '개인정보'를 말합니다.\n\n 제 3 조 (서비스 사업자의 개요)\n 이 약관에서 규정하는 서비스는 회사가 제공하는 서비스인 Just Place 서비스에 한하며 ‘상호 및 주소, 연락처는 다음의 각호와 같다.\n 상호 : 주식회사 나무앤\n 주소 : 서울시 강남구 논현동 10-25 302호\n연락처 : 070-8260-3788\n\n제 4 조 (약관의 효력 및 변경)\n 이 약관은 회사에서 제공하는 Just Place 서비스를 이용하고자 하는 모든 이용자에 대하여 그 효력을 발생합니다. '회사'는 이 약관의 내용을 '회원'이 쉽게 알 수 있도록 '회사'의 서비스 내 하위 메뉴 중 하나에 게시합니다. '회사'는 대한민국의 법령과 국제조약을 위배하지 않는 범위에서 이 약관을 개정할 수 있습니다. '회사'가 약관을 개정할 경우에는 적용예정일 및 개정사유를 명시하여 현행약관과 함께 적용예정일 7일 전부터 공지합니다. 다만, '회원'에게 불리하게 약관내용을 변경하는 경우에는 최소한 30일 이상의 사전 유예기간을 두고 공지하는 것 외에 전자우편발송 등 전자적 수단을 통해 별도로 통지합니다. '회원'은 개정된 약관에 대해 동의하지 않을 권리가 있으며, 개정된 약관에 동의하지 않을 경우 이용계약을 해지할 수 있습니다. '회사'가 전항 단서에 따라 회원에게 통지하면서 상당한 기간(예:30일)을 정하여 거부의사를 표시하지 아니하면 승인한 것으로 본다는 뜻을 명확하게 고지하였음에도 '회원'의 의사표시가 없는 경우에는 변경된 약관을 승인한 것으로 봅니다.\n 제 5 조 (약관 외 준칙)\n 본 약관은 '회사'가 제공하는 제반 서비스에 관한 이용약관과 함께 적용합니다.\n\n 제 2 장 서비스 이용 계약 체결\n\n제 6 조 (이용계약의 성립)\n");
		/*
		WebSettings setting = null;
        setting = wvPersonalInfoCollection.getSettings();
        setting.setJavaScriptEnabled(true);
        setting.setGeolocationEnabled(true);
        wvPersonalInfoCollection.setVerticalScrollbarOverlay(true);
        wvPersonalInfoCollection.loadUrl("file:///android_asset/jpprovision.html");*/
		
	}

	@Override
	public void onCheckedChanged(CompoundButton buttonView,
			boolean isChecked) {
		switch(buttonView.getId()){
		case R.id.checkBox3:
			if(checkBox3.isChecked()){
				checkBox1.setChecked(true);
				checkBox2.setChecked(true);
			} else {
				checkBox1.setChecked(false);
				checkBox2.setChecked(false);
			}					
			break;
		}
		
	}
}
